﻿namespace JxcLite.Services;

/// <summary>
/// 系统业务单据服务接口。
/// </summary>
public interface IBillService : IService
{
    /// <summary>
    /// 分页查询业务单据信息，根据查询条件Type字段区分进货、进退货、销货、销退货。
    /// </summary>
    /// <param name="criteria"></param>
    /// <returns></returns>
    Task<PagingResult<JxBillHead>> QueryBillsAsync(PagingCriteria criteria);

    /// <summary>
    /// 根据单据类型获取默认单据信息。
    /// </summary>
    /// <param name="type"></param>
    /// <returns></returns>
    Task<JxBillHead> GetDefaultBillAsync(string type);

    /// <summary>
    /// 根据表头ID获取单据表体信息列表。
    /// </summary>
    /// <param name="headId"></param>
    /// <returns></returns>
    Task<List<JxBillList>> GetBillListsAsync(string headId);

    /// <summary>
    /// 批量删除单据表头及表体信息。
    /// </summary>
    /// <param name="models"></param>
    /// <returns></returns>
    Task<Result> DeleteBillsAsync(List<JxBillHead> models);

    /// <summary>
    /// 保存单据表头及表体信息。
    /// </summary>
    /// <param name="info"></param>
    /// <returns></returns>
    Task<Result> SaveBillAsync(UploadInfo<JxBillHead> info);
}